package com.recharge.service.httpInterFace.statusEnum;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 道村提单返回状态码信息
 *
 * @author kui
 */
@Getter
@AllArgsConstructor
public enum DaoChunStatus {
    CODE_0000("0000", "订单提交成功（充值中）",1),
    CODE_4001("4001", "必要参数为空", 1),
    CODE_4002("4002", "参数无效", 1),
    CODE_4003("4003", "卡号卡密无效", 1),
    CODE_4004("4004", "号码无效", 1),
    CODE_4005("4005", "地区编码无效", 1),
    CODE_4006("4006", "订单号已存在", 1),
    CODE_4007("4007", "商户不存在", 1),
    CODE_4008("4008", "商户状态无效", 1),
    CODE_4011("4011", "商户账户余额不足", 1),
    CODE_4012("4012", "商户未设置密钥", 1),
    CODE_4013("4013", "无效的交易签名", 1),
    CODE_4014("4014", "3DES加密无效", 1),
    CODE_4015("4015", "不支持的交易类型", 1),
    CODE_4016("4016", "不支持的接口IP", 1),
    CODE_4017("4017", "通道繁忙，未收单", 1),
    CODE_5000("5000", "系统异常，人工处理", 1),
    CODE_200("200", "系统响应正常", 1),
    CODE_400("400", "订单不存在", 1),//（在调用代充提交订单接口，我方无返回结果时，超过60s查询无此订单，方可将订单置失败或再次提交）
    CODE_500("500", "系统异常", 1),
    STATUS_SUCCESS("SUCCESS", "充值成功", 2),
    STATUS_DEALING("DEALING", "充值中", 2),
    STATUS_101("101", "充值号码无法使用该业务", 2),  //（充值失败）
    STATUS_102("102", "充值卡状态已失效", 2),  //（充值失败）
    STATUS_103("103", "充值卡状态有误", 2),  //（充值失败）
    STATUS_104("104", "充值卡密码有误", 2),  //（充值失败）
    STATUS_105("105", "充值号码不存在", 2),  //（充值失败）
    STATUS_201("201", "请求面值与实际面值不符", 2),  //（充值失败）
    STATUS_400("400", "运营商维护", 2),  //（充值失败）
    STATUS_500("500", "充值失败，可再次提交", 2),
    STATUS_600("600", "操作失败", 2),  //（充值失败）
    STATUS_601("601", "未知状态(人工核实)", 2), //(人工核实)
    STATUS_602("602", "其他原因失败", 2),  //（充值失败）
    ;

    //状态码
    private String code;
    //状态消息
    private String msg;
    //类型 1.订单请求 2.订单查询
    private int type;

    public static String getMessage(String code, int type) {
        if (code == null) {
            return "";
        }
        DaoChunStatus[] values = values();
        for (DaoChunStatus value : values) {
            if (value.getCode().equals(code) && value.getType() == type) {
                return value.getMsg();
            }
        }
        return "";
    }


}
